#include <iostream>
 #include <unistd.h>
  #include <signal.h>
 #include <sys/types.h>
       #include <sys/wait.h>

using namespace std;
// void myhandler(int signo)
// {
    
//     cout<<"xxxxxxxxxx"<<signo<<endl;

//     //理解alarm的返回值
//      int n = alarm(3);
//      cout<<"剩余时间："<<n<<endl;
//     //exit(1);
// }


// int main()
// {
//     int n = alarm(50);//alarm发送的是14号信号
//     signal(14,myhandler);//myha ndler是一个函数指针
//      while(1)
//     {
//         cout << "proc is running  pid :%d" <<" "<<getpid()<< endl;
//         sleep(1);
//     }
//     return 0 ;
// }



// int main()
// {

    //测试  core dump功能
  // int a = 10;
  //   int b = 0;

  //   a /= b; 


  //   cout << " a = " << a << endl;
    // pid_t id = fork();
    //     if(id==0)
    //     {
    //         //child
    //           int cnt = 500;
    //     while(cnt)
    //     {
    //         cout << "i am a child process, pid: " << getpid() << "cnt: " << cnt << endl;
    //         sleep(1);
    //         cnt--;
    //     }
    //     exit(0);
    //     }
    //     //father 
    //     //进程等待
    //     int status =0 ;
    //     pid_t rid=waitpid(id,&status,0);//阻塞等待

    //     if(rid==id)
    //     {
    //              cout << "child quit info, rid: " << rid << " exit code: " << 
    //         ((status>>8)&0xFF) << " exit signal: " << (status&0x7F) <<
    //             " core dump: " << ((status>>7)&1) << endl; //  (0000 0000 ... 0001)
    //     }




//     return 0 ;
// }


int main()
{

  //signal(2,SIG_IGN);//忽略2号信号
  signal(2,SIG_DFL);//使用2号信号的默认处理方法

    while(1)
    {
        cout << "hello signal" << endl;
        sleep(1);
    }

  return  0; 
}